#ifndef PRINTERJOB_H_
#define PRINTERJOB_H_

#include "Job.h"
class PrinterJob: public Job {
protected:

public:
	/***************************************************************************************
	* function name: PrinterJob(const PrinterJob& jobToCopy)
	* The Input: Job to be copied
	* The output: None
	* The Function operation: Uses Job's copy constructor to create a new backup-to-disk job
	* 					      with attributes identical to given job's
	***************************************************************************************/
	PrinterJob(const PrinterJob& jobToCopy): Job(jobToCopy) {} // TODO check if should be private

	PrinterJob(const Job& jobToCopy): Job(jobToCopy) {}

	/***************************************************************************************
	* function name: PrinterJob(const unsigned int startTime, const unsigned int length, const int priority)
	* The Input: Values for new job's attributes
	* The output: None
	* The Function operation: Creates a new job with given attributes
	***************************************************************************************/
	PrinterJob(const unsigned int startTime, const unsigned int length, const int priority);

	/***************************************************************************************
	* function name: ~PrinterJob()
	* The Input: None
	* The output: None
	* The Function operation: Destructs printer job object
	***************************************************************************************/
	virtual ~PrinterJob();

	/***************************************************************************************
	* function name: virtual void work()
	* The Input: None
	* The output: None
	* The Function operation: Performs job's task for a single time unit
	***************************************************************************************/
	virtual void work(const int systemTime, const int type);
};

#endif
